/*
* Creater: Truongdv
* Date:17/12/2012
* Idea: Class xu ly danh muc doi tuong
*/
function List(baseUrl,module,controller){
	this.module = module;
	this.baseUrl = baseUrl;
	this.controller = controller;
	this.urlPath = baseUrl + '/' + module + '/' + controller;//Biên List lưu tên module
	myClassList = this;
	this.loadding = false;
	/*
		HIển thị modal thông báo "Đang xử lý dũ liệu"
	*/
	this.statusLoad = function(string){
		//Hiện thông báo
		$('div#note-process').addClass('nq vY');   
		$('div#note-process').show();
		$('div#process').css('width','15%');		
		$('div#process').show();
		$('div#process span.v1').html(string);	

	};
	/*
		Ẩn modal thông báo "Đang xử lý dũ liệu" khi form load xong
	*/
	this.successLoad = function(){
		//Ẩn thông báo
		$('div#note-process').removeClass('vY nq');
		$('div#note-process').hide();
		$('div#process').hide();
	};
	//hiển thị image thể hiện trạng thái đang xử lý dữ liệu khi NSD nhấn vào nút "Tìm kiếm"
	this.statusSearch = function(){
		jQuery('img#isearching').show();
	}
	//Ẩn image thể hiện trạng thái đang xử lý dữ liệu khi NSD nhấn vào nút "Tìm kiếm"
	this.successSearch = function(){
		$('img#isearching').hide();	
	}
}
//Phương thức load dữ liệu
List.prototype.ldmod = function(){
	if(this.loadding) return false;
	this.loadding = true;
	//Lấy tên file XML mô tả cấu trúc danh sách và form nhập liệu
	var dirxml = $('#filexml').val();
	if(typeof(efyXmlList) === 'undefined'){
		efyXmlList = new efyXml(dirxml);
	}
	var url = this.urlPath + '/record';
	this.statusSearch();
	_save_xml_tag_and_value_list(document.forms[0], document.getElementById('hdn_filter_xml_tag_list'), document.getElementById('hdn_filter_xml_value_list'), false)
	var data = $('form#frmlist').serialize();
	$.ajax({
		url: url,
		type: "POST",
		dataType: 'json',
		//cache: true,
		data:data,
		success: function(arrData){
			var arrResult = arrData.arrAllList, filexml = arrData.filexml, xmlFilePath = arrData.xmlFilePath;
			//alert(arrData.xmlFilePath);
			$('#hdn_xml_file').val(filexml);
			//Thay đổi lại cấu trúc màn hình danh sách khi file xml mô tả khác khác file mặc định.
			if (dirxml != xmlFilePath){				
				efyXmlList = new efyXml(xmlFilePath);
				$('#filexml').val(xmlFilePath);
			}
			//fix width chosen
			efyXmlList.exportTable(arrResult,'PK_LISTTYPE',$('div#table-container'),$('#list_name').val(),'frmlist');
			myClassList.successSearch();
			//Phan trang du lieu
			var sdocpertotal = "Danh sách này không có hồ sơ nào";
			if(arrResult.length >0){
				var iNumberRecord = arrResult[0]['TOTAL_RECORD'];
				var numberRow = arrResult.length;
				$('#hdn_order').val(iNumberRecord +1);
				if(numberRow > 0)
					sdocpertotal ="Danh sách có " +numberRow + "/" + iNumberRecord + " hồ sơ.";
				var data = {iTotalRecord: iNumberRecord,
						iPage: $('form#frmlist #hdn_current_page').val(),
						FuntionName:'pagingModal',
						JsChangePage:'myList.gotopageModal',
						iRowOnPage: $('#hdn_record_number_page').val()
				}
				$.ajax({
					url: baseUrl + "/public/ajax/ajax.php",
					type: "POST",
					cache: true,
					data:data,
					success: function(string){
						$('td#generateStringNumberPage').html(string);
					}
				});
			}
			$('#sdocpertotal').html(sdocpertotal);			
			$('div#IndexFrm').show();
			$('div#UpdateFrm').hide();
			myClassList.loadding = false;
			var widthdiv = $('div.searh-fixed #listtype_type').css('width');
			$('div.searh-fixed .chzn-container').css('width',widthdiv);
			scrollTop(1);
			shortcut.remove('Enter');
			shortcut.add("Enter",function() {
				myList.ldmod();
			});
		}
	});

}
/**
 * Create: Truongdv
 * Date: 17/12/2012
 * Function: Them moi
 */
List.prototype.add = function(){

	var url = this.urlPath + '/add';
	this.statusLoad('Đang tải dữ liệu...');
	var data ={hdn_id_listtype:$('form#frmlist #listtype_type').val(),hdn_xml_file:$('#hdn_xml_file').val()};
	$.ajax({
		url: url,
		type: "POST",
		data: data,
		// cache: true,
		//dataType: "json",		
		success: function(string){
			var currentState = { content: string};
			loading = false;
			$('div#IndexFrm').hide();
			$('div#UpdateFrm').html(string);
			$('div#UpdateFrm').show();
			if (history.pushState) history.pushState(currentState, "", url);
			//Create evens
			myClassList.loadUpdatefrm();
			shortcut.remove('Enter');
			myClassList.successLoad();
		}
	});	
	 return !history.pushState;
}
/**
 * Create: Truongdv
 * Date: 17/12/2012
 * Function: Luu ho so
 */
List.prototype.save = function(act_event){
	if(this.loadding) return false;
	this.loadding = true;
	var p_hdn_tag_obj = document.getElementById('hdn_xml_tag_list'), 
	p_hdn_value_obj = document.getElementById('hdn_xml_value_list');
	_save_xml_tag_and_value_list(document.forms['frmAddList'], p_hdn_tag_obj, p_hdn_value_obj, true);
	var url = this.urlPath + '/save',myClass = this,urlUpdate = this.urlPath + '/add';
	if(verify(document.forms['frmAddList'])){
		//Hidden luu danh sach the va gia tri tuong ung trong xau XML
		document.getElementById('hdn_XmlTagValueList').value = p_hdn_tag_obj.value + '|{*^*}|' + p_hdn_value_obj.value;
		var data = $("form#frmAddList").serialize();
		statusLoad('Đang lưu dữ liệu...');
		$.ajax({
			url: url,
			type: "POST",
			data: data,
			// cache: true,		
			success: function(string){
				myClass.loadding = false;
				if (act_event ==='next') {
					var datanext ={hdn_id_listtype:$('form#frmAddList #hdn_id_listtype').val()};
					$("div#UpdateFrm").load(urlUpdate,datanext,function(){
						myClass.loadUpdatefrm();
					});
				}else{
					myClass.ldmod();
					$('div#IndexFrm').show();
					$('div#UpdateFrm').hide();
				}
				successLoad();
			},
			error: function (){
				jAlert('Có lỗi xảy ra', 'Error Dialog');
			}
		});			
	}
}
//Phương thức sửa
List.prototype.edit = function(){
	var hdn_list_id ='',count = 0;
	$('form#frmlist input[type=checkbox][name="chk_item_id"]:checked').each(function(){
		hdn_list_id = $(this).val();
		count++;
	});
	if(count == 0){
		jAlert('Bạn chưa chọn một đối tượng nào để sửa!', 'Edit Dialog');
		return false;
	}
	if(count >1){
		jAlert('Bạn chỉ được chọn một đối tượng để sửa!', 'Edit Dialog');
		return false;
	}
	var url = this.urlPath + '/edit';
	//Sửa
	var data = {hdn_list_id : hdn_list_id,hdn_id_listtype:$('form#frmlist #listtype_type').val(),hdn_xml_file:$('#hdn_xml_file').val()};
	this.statusLoad('Đang tải dữ liệu...');
    $.ajax({
		url: url,
		type: "POST",
		data: data,
		// cache: true,		
		success: function(string){
			$('div#IndexFrm').hide();
			$('div#UpdateFrm').html(string);
			$('div#UpdateFrm').show();
			var currentState = {html: string};
			// nếu trình duyệt hỗ trợ thì lưu lại trạng thái hiện tại và chuyển url
			if (history.pushState) history.pushState(currentState, currentState, url);
			//Create evens
			myClassList.loadUpdatefrm();
			shortcut.remove('Enter');
			myClassList.successLoad();
		}
	});
    return !history.pushState;
}

//Phương thức view
List.prototype.view = function(){
	alert('view');
}
//Phương thức xóa
List.prototype.deleteRecord=function(){
	//hdn_object_id_list
	var url = this.urlPath + '/delete',listId ='';
	$('form#frmlist input[type=checkbox][name="chk_item_id"]:checked').each(function(){
		listId += $(this).val() + ',';
	});
	listId = listId.substr(0,listId.length - 1);
	if(listId ==''){
		jAlert('Bạn chưa chọn đối tượng nào', 'Delete Dialog');
		return false;
	}
	jConfirm('Bạn có chắc chắn muốn xóa những hồ sơ này?', 'Xóa hồ sơ', function(r) {
	    if(r){
			var arrdata = {hdn_object_id_list : listId,hdn_id_listtype:$('form#frmlist #listtype_type').val()};
			$.ajax({
				url: url,
				type: "POST",
				data: arrdata,
				// cache: true,
				success: function(string){
					if(string =='OK'){
						$('form#frmlist input[type=checkbox][name="chk_item_id"]:checked').each(function(){
							$(this).parent().parent().remove();
						});
					}
				}
			});		
		}
	});
}
//Phương thức xóa
List.prototype.exportxml=function(){
	$.ajax({url: this.urlPath + '/xml',type: "POST",});
}
List.prototype.back=function(){
	var myClass = this;
	scrollTop(1);
	$('div#IndexFrm').show();
	$('div#UpdateFrm').hide();
	shortcut.remove('Enter');
	shortcut.add("Enter",function() {
		myClass.ldmod();
	});
}
List.prototype.loadIndexfrm = function(){
	shortcut.remove('Enter');
	shortcut.add("Enter",function() {
		myList.ldmod();
	});
	//Tìm kiếm
	$('.clsearch').click(function(){
		myList.ldmod();
	})
	//Thêm
	$('.cladd').click(function(){
		myList.add();
	})
	//Sửa
	$('.cledit').click(function(){
		myList.edit();
	})
	//Xóa
	$('.cldelete').click(function(){
		myList.deleteRecord();
	})
}

List.prototype.loadUpdatefrm = function(){
	var myClass = this;
	$('#list_code_update').focus();
	$('.clsave').click(function(){
		myClass.save($(this).attr('act_event'));
	})
	$('.clback').click(function(){
		myClass.back();
	})
}
List.prototype.changeNumberRowPerPageModal = function(obj){
	document.getElementById('hdn_record_number_page').value = obj.value;
	document.getElementById('hdn_current_page').value = 1;
	this.ldmod();
}
List.prototype.gotopageModal = function(num){
	document.getElementById('hdn_record_number_page').value = $('#cbo_nuber_record_page').val();
	document.getElementById('hdn_current_page').value = num;	
	this.ldmod(); 
}